home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / lib / tasksel / tests / desktop < prev    next >
Text File  |  2009-10-22  |  2KB  |  121 lines

  1. #!/bin/sh
  2. # Try to guess at whether the user would like a desktop installed on their
  3. # system. Of course Debian has many users who use it on a wide array of
  4. # hardware, so this is tricky, but it's only a default.
  5. set -e
  6.  
  7. if ! [ "$NEW_INSTALL" ]; then
  8.     exit 3
  9. fi
  10.  
  11. arch="$(dpkg --print-architecture)"
  12.  
  13. unmark () {
  14.     exit 3
  15. }
  16. mark () {
  17.     exit 2
  18. }
  19.  
  20. # A few arches have the lion's share of desktops.
  21. common_desktop_architecture () {
  22.     case "$arch" in
  23.     i386|amd64|powerpc*)
  24.         return 0
  25.     ;;
  26.     *)
  27.         return 1
  28.     ;;
  29.     esac
  30. }
  31.  
  32. # On some arches it's almost unheard of to run a desktop, at least using
  33. # this task.
  34. unlikely_desktop_architecture () {
  35.     case "$arch" in
  36.     m68k|s390|hppa)
  37.         return 0
  38.     ;;
  39.     *)
  40.         return 1
  41.     ;;
  42.     esac
  43. }
  44.  
  45. # Modern desktops take a lot of ram.
  46. enough_ram () {
  47.     min_ram=64
  48.     ram=$(grep ^MemTotal: /proc/meminfo | { read x y z; echo $y; }) || true # kb
  49.     # The 4 is a fuzz factor to allow for kernel ram usage.
  50.     if [ "$ram" ] && [ "$ram" -ge "$(expr $(expr $min_ram - 4) \* 1024)" ]; then
  51.         return 0
  52.     else
  53.         return 1
  54.     fi
  55. }
  56.  
  57. # The desktop task requires 2 gb or so of disk in /usr, and .5 in /var for
  58. # the debs.
  59. # FIXME: this should really be generalised and used for tasksel to not
  60. # suggest any task for which there is not enough disk.
  61. enough_disk () {
  62.     min_disk=3
  63.     disk=$(df -P /usr | tail -1 | awk '{print $4}')
  64.     if [ "$disk" ] && [ "$disk" -ge "$(expr $min_disk \* 1024 \* 1024)" ]; then
  65.         return 0
  66.     else
  67.         return 1
  68.     fi
  69. }
  70.  
  71. desktop_hardware () {
  72.     if which laptop-detect >/dev/null 2>&1 && \
  73.         laptop-detect; then
  74.         # Nearly always appropriate to include a desktop.
  75.         return 0
  76.     else
  77.         # TODO: test for the existence of a framebuffer and a mouse.
  78.         # A mouse, in particular, almost always indicates a
  79.         # desktop.
  80.         :
  81.     fi
  82.     return 1
  83. }
  84.  
  85. rack_hardware () {
  86.     if which dmidecode >/dev/null 2>&1 && \
  87.         dmidecode | grep -q 'Type: Rack Mount Chassis'; then
  88.         return 0
  89.     fi
  90.         
  91.     # XXX further heuristics here to avoid selecting the task on
  92.     # high-end hardware that's intended to be used as a server.
  93.     # For example, if it has two NICs with link, it's probably a
  94.     # server.
  95.  
  96.     return 1
  97. }
  98.  
  99. if ! enough_ram || ! enough_disk; then
  100.     unmark
  101. fi
  102.  
  103. if desktop_hardware; then
  104.     mark
  105. fi
  106.  
  107. if unlikely_desktop_architecture; then
  108.     unmark
  109. elif common_desktop_architecture; then
  110.     if rack_hardware; then
  111.         unmark
  112.     else
  113.         mark # probably a desktop ...
  114.     fi
  115. else
  116.     # XXX further heuristics here
  117.     :
  118. fi
  119.  
  120. unmark
  121.